package com.niiwoo.civet.user.service;

import com.niiwoo.civet.user.dto.UserPersonalDubboInfoDTO;
import com.niiwoo.civet.user.dto.UserProfessionDubboInfoDTO;
import com.niiwoo.civet.user.dto.request.LoanDataAuthenticationRequestDTO;
import com.niiwoo.civet.user.dto.response.*;

import java.util.List;
import java.util.Map;

/**
 * Created by zhangwanli on 2017/9/20.
 */
public interface UserDataDubboService {

    /**
     * 查询用户个人信息
     * @param userId 用户ID
     * @return UserPersonalDubboInfoDTO
     */
    public UserPersonalDubboInfoDTO userPersonalInfo(String userId);

    /**
     * 查询用户职业信息
     * @param userId 用户ID
     * @return UserProfessionDubboInfoDTO
     */
    public UserProfessionDubboInfoDTO userProfessionInfo(String userId);

    /**
     * 保存用户个人信息
     * @param userPersonalDubboInfoDTO 用户个人信息DTO
     */
    public void saveOrUpdateUserPersonalInfo(UserPersonalDubboInfoDTO userPersonalDubboInfoDTO);

    /**
     * 保存用户职业信息
     * @param userProfessionDubboInfoDTO 用户职业信息DTO
     */
    public void saveOrUpdateUserProfessionInfo(UserProfessionDubboInfoDTO userProfessionDubboInfoDTO);

    /**
     * 根据区域名称查询区域code 模糊匹配  areaName%
     * @param areaName
     * @return
     */
    public String selectAreaCodeByAreaName(String areaName);

    /**
     * 根据areaName 查询areaCode与parentCode,结果可能会有多条 如南山区
     * @param areaName
     * @return
     */
    public List<Map<String,String>> selectAreaCodeAndParentCodeByAreaName(String areaName);

    /**
     * 用户信息检查（基本信息、个人信息、职业信息、账户）
     * @param userId
     * @return
     */
    public UserInfoCheckResposeDTO userInfoCheck(String userId);

    /**
     * 查询用户关系人
     * @param userId
     * @return
     */
    public List<RelationVerificationDTO> getRelationVerification(String userId);

    /**
     * 获取极速借开放城市
     */
    public List<UserAreaDictionaryDTO> selectFastBorrowAccreditCity(List<String> areaCode);

    public String selectAreaNameByAreaCode(String areaCode);


    /**
     * 借款资料认证查询
     * @return LoanDataAuthenticationResponseDTO
     */
   default public LoanDataAuthenticationResponseDTO loanDataAuthentication(LoanDataAuthenticationRequestDTO requestDTO){ return null;}

    /**
     * 获取消费贷借款用户消费信息
     * @param borrowUserId
     * @return
     */
   default public LoanConsumeInfoResponseDTO selectLoanConsumeInfo(String borrowUserId){
       return null;
   };
}
